package com.hualan.web.wsj;

import com.hualan.pojo.wsj.History;
import com.hualan.pojo.wsj.SearchRecordRequest;
import com.hualan.service.service.service.wsj.HistoryService;
import com.hualan.util.ResultEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController// 标记这个类为一个Controller，处理Rest API请求
@RequestMapping("/history") // 定义请求的基础路径
public class HistoryController {
    @Autowired// 自动注入HistoryService实例，Spring会自动为该字段赋值
    private HistoryService historyService;// HistoryService，用于处理历史记录的业务逻辑
    @RequestMapping("/listAll")// 定义/listAll的请求映射路径
    public ResultEntity listAll(Integer userId){ // 接收一个userId参数，查询该用户的所有历史记录
        return ResultEntity.ok(historyService.listAll(userId));// 调用HistoryService的listAll方法获取历史记录，返回封装好的ResultEntity对象
    }

    // 保存搜索记录
    @RequestMapping(value = "/addRecord", method = RequestMethod.POST)  // 映射POST请求到/addRecord路径

    //method = RequestMethod.POST 是 Spring 中 @RequestMapping 注解的一个属性，用来指定请求方法的类型。具体来说，RequestMethod.POST 表示该请求处理方法只响应 HTTP POST 请求。
    public ResultEntity addSearchRecord(@RequestBody SearchRecordRequest request) {

        //@RequestBody SearchRecordRequest request：从请求体中解析数据并映射为 SearchRecordRequest 对象。SearchRecordRequest 类通常包含 userId 和 content 属性，用于表示用户的搜索记录。


        //打印接收到的搜索内容，帮助调试
        System.out.println("Received content: " + request.getContent());

        //创建一个新的 History 对象来存储即将保存的搜索记录。
        History history = new History();

        //从请求中获取 userId和content，并将其设置到 History 对象中。
        history.setUserId(request.getUserId());
        history.setContent(request.getContent());

        // 调用服务层保存记录
        historyService.addSearchRecord(history);// 调用HistoryService的addSearchRecord方法保存记录到数据库


        return ResultEntity.ok("保存成功");// 返回保存成功的结果
    }


}
